﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using QUANLIBANHANG.ENTITY;
using QUANLIBANHANG.BUS;
using QUANLIBANHANG.DAL;
using System.IO;
using System.Security.Cryptography;
using System.Data.SqlClient;

namespace QUANLIBANHANG.GUI
{
    public partial class formLogin : DevExpress.XtraEditors.XtraForm
    {

        NhanvienBUS nvBUS = new NhanvienBUS();
        FormQuanLiBanHang main = new FormQuanLiBanHang();
        public formLogin()
        {
            InitializeComponent();
            try
            {
                DataTable dt = NhanvienBUS.getTableNV("");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Lỗi kết nối server", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                formServer frmServer = new formServer();
                frmServer.ShowDialog();
                
                formLogin logon = new formLogin();
               
                
            }
          
            

        }

        public delegate void sentInfo(string str);
        // Mã hóa mật khẩu MD5
        public static string toMD5(string pass)
        {
            MD5CryptoServiceProvider myMD5 = new MD5CryptoServiceProvider();
            byte[] myPass = System.Text.Encoding.UTF8.GetBytes(pass);
            myPass = myMD5.ComputeHash(myPass); StringBuilder s = new StringBuilder();
            foreach (byte p in myPass)
            {
                s.Append(p.ToString("x").ToLower());
            }
            return s.ToString();
        }
        // Kiểm tra tai khoàn nhập vào vơi tai khoản trong CSDL
        private bool checkLogin(string user, string pass)
        {
            try
            {
                DataTable dt = NhanvienBUS.getTableNV("");
                foreach (DataRow item in dt.Rows)
                {
                    if (item["MANV"].ToString() == user && item["PASS"].ToString() == pass)
                    {
                        return true;
                        //break;
                    }
                }
                return false;
            }
            catch (SqlException ex)
            {
                if (ex.Number == 53)
                {
                    MessageBox.Show("Không thể kết nối cơ sở dử liệu", "Lỗi kết nối", MessageBoxButtons.OK, MessageBoxIcon.Error);

                }
                else
                {
                    MessageBox.Show(ex.Message, "Lỗi kết nối");

                }
                this.Close();
                return false;
            }


        }
        // thự hiên login
        private void btnLogin_Click(object sender, EventArgs e)
        {
            
            try
            {

                if (txtUser.Text == "")
                {
                    lblThongBaoLogin.Visible = true;
                    lblThongBaoLogin.Text = "Hãy nhập tên tài khoản của bạn";
                    return;
                }
                else if (txtPass.Text == "")
                {
                    lblThongBaoLogin.Visible = true;
                    lblThongBaoLogin.Text = "Hãy nhập mật khẩu của bạn";
                    return;

                }
                else if (checkLogin(txtUser.Text, toMD5(txtPass.Text)))// Kiểm tra tài khoan
                {
                    lblThongBaoLogin.Visible = false;
                    Timer time = new Timer();
                    time.Interval = 3000;
                    time.Start();
                    time.Tick += time_Tick;
                    //string[] line;
                    if (checkGhiNho.Checked == true)
                    {

                        string[] line = { txtUser.Text, txtPass.Text,ConnectionSQL.conn.DataSource };

                        File.WriteAllLines(@"./th.txt", line);
                    }
                    else
                    {
                        string[] line = { "", "",ConnectionSQL.conn.DataSource };

                        File.WriteAllLines(@"./th.txt", line);
                    }

                    progressPanel1.Visible = true;


                }
                else
                {
                    lblThongBaoLogin.Visible = true;
                    lblThongBaoLogin.Text = "Bạn nhập sai tên tài khoản hoặc mật khẩu";
                    return;
                }

            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }

        }

        void time_Tick(object sender, EventArgs e)
        {


            sentInfo sent = new sentInfo(main.getStr);
            sent(txtUser.Text);
            main.Show();
            this.Hide();
        }

        
        // Sự kiện khi nhấn Enter
        private void txtPass_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnLogin_Click(sender, e);
            }
        }

        private void btnExitLG_Click(object sender, EventArgs e)
        {
            this.Close();
        }



        private void formLogin_Load(object sender, EventArgs e)
        {
            
            string[] line = File.ReadAllLines(@"./th.txt");
            if (line[0] != "")// kiểm tra xem trong file có dử liệu không
            {
                checkGhiNho.Checked = true;
                txtUser.Text = line[0];
                txtPass.Text = line[1];
            }
        }
    }
}